Progress in technology combined with lowering cost have proliferated the usage of multiple system devices by a single user. Modern society's want for increased efficiency has resulted in the development of a keyboard, video monitor, and mouse (KVM) switch that enables the user to control a plurality of system devices (e.g., computers, servers, power supply units, etc.) from a singular location.
In an example, a user has two computers, which the user wants to control through a single console (i.e., a keyboard, video monitor, and/or mouse). The user is able to operate either computer by connecting the console and the two computers to the KVM switch.
To illustrate the data flow within the aforementioned example, FIG. 1A shows a simple KVM switch configuration. The switch configuration may be divided into two sections, a front end 101 and a back end 103. Front end 101 may include a video monitor 105, a keyboard 107, a mouse 109, and cable cords connecting the aforementioned input devices to a KVM switch 111. Back end 103 may include a server 113 which may be connected to KVM switch 111 via a keyboard cable 117, a mouse cable 119, and a video cable 121. Additionally, a server 115 may be connected to KVM switch 111 by a keyboard cable 123, a mouse cable 125, and a video cable 127. Thus, by using one set of peripherals (105, 107, and 109), the user may now alternate between servers (113, 115) as data flow may be sent to either one of the servers (113, 115).
Generally, when a user requests for a connection with a server, data may flow from front end 101 to KVM switch 111. KVM switch 111 may then relay the request to a server located in back end 103. Although the keyboard, video monitor and mouse utilized are capable of bi-directional communication, i.e., the ability to both send and receive information, oftentimes, the data flow is uni-directional (i.e., sending data) from the front end to the back end.
Similarly, KVM switches may be employed in an enterprise environment. Consider the situation wherein, for example, a company with several departments. Each department may have servers from which one or more users may need access. To enable these servers to be shared among a plurality of users, KVM switches may be implemented. To facilitate discussion, FIG. 1B shows a company with three departments (100, 102, and 104). Each department may have a plurality of users (100a, 102a, and 104a, respectively) who may need access to a plurality of servers (100b, 102b, and 104b, respectively). By employing KVM switches (100c, 102c, and 104c, respectively), a user may be able to access each server from his console.
The aforementioned example (i.e., FIG. 1B) is a simple enterprise example; however, KVM switches are typically used in a data center environment wherein thousands of servers may be interconnected. To connect the servers, a plurality of KVM switches may have to be daisy-chained together to form a network. Generally, a KVM switch may support 2 to 64 input ports; thus, the number of KVM switches may depend upon the number of ports supported by a KVM switch.
KVM switches may be managed by three main methods: pressing a button on the KVM switch, using keyboard commands, and assessing on-screen displays (OSDs). In the first method, a user has to manually press a button on the KVM switch to access a server. Although this method may be feasible in simple server or desktop environments, this method is highly inefficient in a larger enterprise environment, such as a data center, where servers may occupy a building the size of a football stadium.
In the second method, keyboard commands (e.g., pressing function keys, an escape key, an enter key, etc.) may be utilized to control KVM switches. The user may enter separate keyboard commands to initialize a KVM switch and to connect to a server. To establish a data path connectivity to the target server, the user may have the repetitive task of continually entering keyboard commands in order to move from one KVM switch/server to another. As discussed herein, data path connectivity refers to the process of establishing a connection from a console to a server through one or more KVM switches. The user may find this method tedious if a large number of KVM switches are interposed between the user's console and the server. The repetitive task of manually entering the keyboard commands may be time-consuming and prone to human errors.
In the third method, KVM switches may be accessible through an on-screen display (OSD), which is a DOS-like screen listing the servers connected to the KVM switch. The user may enter separate keyboard commands to initialize the KVM switch and to activate the OSD. Since the OSD may limit the server names displayed, a user may either have to page-down or type in a server name to select and connect to the server. If multiple KVM switches are interposed between the user's console and the target server, the user may have the onerous task of repeating this process until the user is connected to the target server. Similar to the second method, this task may be time-consuming and prone to human errors.
If a user operates within a homogeneous switch environment, the disadvantages in the aforementioned methods of managing KVM switches may be alleviated wherein the task of establishing the data path connectivity to the target server is simplified. As discussed herein, a homogeneous switch environment refers to an environment in which KVM switches employed by a company are of the same brand, make, and model (e.g., Avocent AV200 KVM Switch). Since the KVM switches share the same command protocol structures, the operating systems of the KVM switches are able to communicate with one another to establish a data path connectivity through any available KVM switch.
FIG. 2 shows an example of a homogeneous KVM switch environment. Five groups of servers (202a, 202b, 202c, 202d, and 202e) are connected to a group of consoles (210a, 210b, 210c, 210d, 210e, and 210f) via a plurality of KVM switches (204a, 204b, 204c, 204d, 204e, 206a, 206b, 206c, 208a and 208b).
In an example, the user may enter keyboard commands to initialize KVM switch 208b and to select group of servers (GOS) 202d. By executing the keyboard commands, KVM switch 208b sends the request to the target server or to the next available KVM switch. Since KVM switch 208b is not directly connected to GOS 202d, the signal is forwarded to KVM switch 206a, 206b or 206c. Upon receiving the signal, KVM switch 206c forwards the signal to KVM switch 204d since GOS 202d is not directly connected to KVM switch 206c. As KVM switch 204d is directly connected to GOS 202d, a connection is made between console 210f and GOS 202d. 
However, a heterogeneous switch environment may be more prevalent in today's acquisition and merger enterprise environment. As discussed herein, a heterogeneous switch environment refers to an environment in which one or more KVM switches employed by a company are of different brands, makes, and/or models. Note that heterogeneous switch environment may include homogeneous switches. As distinct command protocols (i.e., communication syntaxes which KVM switches use to send switch command signals from a console) may exist for heterogeneous KVM switches, the operating systems of the KVM switches may be incommunicable with one another in order to establish data path connectivity by executing a single command.
FIG. 3A shows a heterogeneous KVM switch environment. A KVM switch 302 is connected to KVM switches 304 and 306; connected to KVM switch 302, via KVM switch 304, are KVM switches 308 and 310. A group of servers (GOS) 312 and consoles 314a, 314b, and 314c are connected to KVM switch 302. Connected to KVM switch 304 are a console 316 and a GOS 318. Also connected to KVM switch 306 is a GOS 320. Attached to KVM switches 308 and 310 are a GOS 322 and a GOS 324, respectively.
FIG. 3B represents a flowchart outlining the steps establishing data path connectivity in a heterogeneous switch environment. FIG. 3B will be discussed relative to FIG. 3A. Consider the situation wherein, for example, a user at console 314c wants to connect to GOS 322. Unless the user knows the data path to establish connectivity, the user may have to employ a trial-and-error method (i.e., randomly selecting a server) at each KVM switch in order to determine the appropriate data path. Since the data path establishing connectivity between the two include three heterogeneous KVM switches (302, 304, and 308), the operating systems of the KVM switches may be incommunicable forcing the user to remember, repeat, and use multiple command structures at each KVM switch (302, 304, and 308).
Keyboard based switch commands (i.e., a first set of command protocols) may be entered by the user at console 314c to initialize KVM switch 302, which is not directly connected to GOS 322 (steps 352 and 354). The OSD appears with a list of available server ports that are connected to KVM switch 302 (step 356), wherein the user may either page-down through the list or type in the server name (step 358). In order to determine the next KVM switch along the data path, the user may select/highlight a server port (step 360) by employing a trial-and-error method. Once a server port has been selected, the user may press the enter key (step 362) which may shut down the OSD (step 364) and may execute the switch command protocol enabling the user access to the new server or groups of server ports (step 366) at the next KVM switch using the next switch command protocol.
However, if the new server is not located within the same GOS or along the same data path as KVM switches 302, 304, and 308 (step 368), the user may have to return to the previous KVM switch (e.g. KVM switch 302) to repeat the process until successfully connecting to the next target server (i.e., GOS 318) is established (step 370). From GOS 318, the user may employ a second set of command protocols to connect to the next KVM switch (i.e., KVM switch 308). Steps 352 to 366 are repeated at KVM switches 304 and 308 until the user reaches the group of server ports at which the target server (GOS 322) resides. In the above example, three different command protocols are employed before the user is connected to GOS 322 (step 370).
There are several disadvantages associated with a heterogeneous KVM switch environment. For example, since the operating systems of heterogeneous KVM switches are incommunicable with one another, the user may have to spend more time to establish data path connectivity. Further, while establishing the data path connectivity between the KVM switches, the user may be required to authenticate (e.g., user name, password, etc.) at each KVM switch. For some users, this process may become repetitive and tedious, especially in a larger enterprise environment.
Another disadvantage exists when a user requests unauthorized access to certain servers on a KVM switch. Since not all KVM switch employs an authentication module, the user may be able to connect to all unprotected servers on the KVM switch.